package com.zmykj.hik.hikService.entity;

/**
 * 海康用户人员信息
 *
 * @author LengChen
 * @version 1.0
 * @date 2021/5/20
 */
public class HikUserInfo {

    private UserInfo UserInfo = new UserInfo();

    public class UserInfo {

        /*必选项，string，工号（人员 ID）*/
        private String employeeNo;

        /*可选项，boolean，是否删除该人员：true-是。仅当需要删除该人员时，该节点为必选项；对于添加或修改人员信息而言，该节点可为空*/
        private Boolean deleteUser = false;

        /*可选项，string，人员姓名*/
        private String name;

        /*必选项，string，人员类型：“normal”-普通人（主人）、“visitor”-来宾（访客）、“blackList”-黑名单人*/
        private String userType = "normal";

        /*可选项，boolean，是否启用关门延迟：true-是、false-否*/
        private Boolean closeDelayEnabled = false;

        /*可选项，string，人员验证方式：“cardAndPw”-刷卡+密码, “card”-刷卡, “cardOrPw”-刷卡或密码,
            “fp”-指纹, “fpAndPw”-指纹+密码, “fpOrCard”-指纹或刷卡, “fpAndCard”-指纹+刷卡,
            “fpAndCardAndPw”-指纹+刷卡+密码, “faceOrFpOrCardOrPw”-人脸或指纹或刷卡或密码, “faceAndFp”-
            人脸+指纹, “faceAndPw”-人脸+密码, “faceAndCard”-人脸+刷卡, “face”-人脸,
            “employeeNoAndPw”-工号+密码, “fpOrPw”-指纹或密码, “employeeNoAndFp”-工号+指纹,
            “employeeNoAndFpAndPw”-工号+指纹+密码, “faceAndFpAndCard”-人脸+指纹+刷卡, “faceAndPwAndFp”-
            人脸+密码+指纹, “employeeNoAndFace”-工号+人脸, “faceOrfaceAndCard”-人脸或人脸+刷卡,
            “fpOrface”-指纹或人脸, “cardOrfaceOrPw”-刷卡或人脸或密码, “cardOrFace”-刷卡或人脸,
            “cardOrFaceOrFp”-刷卡或人脸或指纹, “cardOrFpOrPw”-刷卡或指纹或密码。人员验证方式的优先级高于
            读卡器验证方式的优先级*/
        private String userVerifyMode = "faceOrFpOrCardOrPw";

        /*可选项，boolean，是否进行人员重复添加校验：true-是、false-否。如果未配置该节点，设备默认将进行
            人员重复校验。无人员信息时，可将该节点设为 false 以加快数据下发速度；否则，一般不建议配置该节点*/
        private Boolean checkUser = true;

        /*可选项，boolean，若修改的人员信息不存在是否添加该人员：false-否（如果设备判断正在修改的人员信息
            ISUPSDK（门禁以人为中心） 开发指南
            405
            不存在，将返回失败响应信息及错误码）、true-是（如果设备判断正在修改的人员信息不存在，将返回成功响
            应信息并添加该人员）。如果未配置该节点，默认不添加该人员*/
        private Boolean addUser = true;

        private Valid Valid = new Valid();

        /*必选项，有效期参数。有效期可以是介于 1970-01-01 00:00:00 到 2037-12-31 23:59:59 之间的一段时间*/
        public class Valid {
            /*必选项，boolean，是否启用有效期：false-禁用、true-启用。如果该节点设为 false，表示长期有效*/
            private boolean enable = false;

            /*必选项，有效期的开始时间（如果节点 e timeType 不存在或为“local”，节点 e beginTime 为设备本地时间，例
            如：“2017-08-01T17:30:08”；如果节点 e timeType 为“UTC”，节点 e beginTime 为 UTC 时间，例如：
            “2017-08-01T17:30:08+08:00”）*/
            private String beginTime = "2010-01-01T00:00:00";

            /*必选项，有效期的结束时间（如果节点 e timeType 不存在或为“local”，节点 e endTime 为设备本地时间，例
            如：“2017-08-01T17:30:08”；如果节点 e timeType 为“UTC”，节点 e endTime 为 UTC 时间，例如：
            “2017-08-01T17:30:08+08:00”）*/
            private String endTime = "2030-12-31T23:59:59";

            /*可选项，string，时间类型：“local”-设备本地时间、“UTC”-UTC 时间*/
            private String timeType = "local";

            public boolean isEnable() {
                return enable;
            }

            public void setEnable(boolean enable) {
                this.enable = enable;
            }

            public String getBeginTime() {
                return beginTime;
            }

            public void setBeginTime(String beginTime) {
                this.beginTime = beginTime;
            }

            public String getEndTime() {
                return endTime;
            }

            public void setEndTime(String endTime) {
                this.endTime = endTime;
            }

            public String getTimeType() {
                return timeType;
            }

            public void setTimeType(String timeType) {
                this.timeType = timeType;
            }
        }


        public String getEmployeeNo() {
            return employeeNo;
        }

        public void setEmployeeNo(String employeeNo) {
            this.employeeNo = employeeNo;
        }

        public Boolean getDeleteUser() {
            return deleteUser;
        }

        public void setDeleteUser(Boolean deleteUser) {
            this.deleteUser = deleteUser;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getUserType() {
            return userType;
        }

        public void setUserType(String userType) {
            this.userType = userType;
        }

        public Boolean getCloseDelayEnabled() {
            return closeDelayEnabled;
        }

        public void setCloseDelayEnabled(Boolean closeDelayEnabled) {
            this.closeDelayEnabled = closeDelayEnabled;
        }

        public String getUserVerifyMode() {
            return userVerifyMode;
        }

        public void setUserVerifyMode(String userVerifyMode) {
            this.userVerifyMode = userVerifyMode;
        }

        public Boolean getCheckUser() {
            return checkUser;
        }

        public void setCheckUser(Boolean checkUser) {
            this.checkUser = checkUser;
        }

        public Boolean getAddUser() {
            return addUser;
        }

        public void setAddUser(Boolean addUser) {
            this.addUser = addUser;
        }

        public Valid getValid() {
            return Valid;
        }

        public void setValid(Valid valid) {
            Valid = valid;
        }
    }

    public UserInfo getUserInfo() {
        return UserInfo;
    }

    public void setUserInfo(UserInfo userInfo) {
        this.UserInfo = userInfo;
    }
}
